package br.com.baco.evento.negocio;

import java.util.List;

import android.content.Context;
import br.com.baco.evento.EventoFactory;
import br.com.baco.evento.dominio.Evento;
import br.com.baco.evento.persistencia.IEventoDAO;
import br.com.baco.recurso.RecursoFactory;
import br.com.baco.recurso.negocio.IRecursoServices;

public class EventoServices implements IEventoServices {
	
	private IEventoDAO eventoDao;
	private IRecursoServices recursoServices;
	
	public EventoServices(Context context){
		this.setEventoDao(EventoFactory.getInstance().createDAO(context));
		this.setRecursoServices(RecursoFactory.getInstance().createServices(context));
	}

	@Override
	public Evento cadastrar(Evento evento) {
		// TODO Auto-generated method stub
		try {
			return this.getEventoDao().salvar( evento );
		} catch (Exception e) {
			return null;
		}
	}

	@Override
	public boolean editar(Evento evento) {
		// TODO Auto-generated method stub
		try {
			if(this.getEventoDao().editar( evento )) return true;
			return false;
		} catch (Exception e) {
			return false;
		}
	}

	@Override
	public boolean excluir(Evento evento) {
		// TODO Auto-generated method stub
		try {
			if(this.getEventoDao().excluir( evento )) return true;
			return false;
		} catch (Exception e) {
			return false;
		}
	}

	@Override
	public Evento visualizar(int id) {
		// TODO Auto-generated method stub
		try {
			return this.getEventoDao().getById(id);
		} catch (Exception e) {
			return null;
		}
	}

	@Override
	public List<Evento> listar() {
		System.out.println("SERICE");
		System.out.println(this.getEventoDao().getAll());
		// TODO Auto-generated method stub
		try {
			return this.getEventoDao().getAll();
		} catch (Exception e) {
			return null;
		}
	}
	
	@Override
	public Evento upRecursosInEvento(Evento evento){	
		evento.setRecursos(this.getRecursoServices().recuperarRecursos(evento));
		return evento;
	}

	public IEventoDAO getEventoDao() {
		return eventoDao;
	}

	public void setEventoDao(IEventoDAO eventoDao) {
		this.eventoDao = eventoDao;
	}

	private IRecursoServices getRecursoServices() {
		return recursoServices;
	}

	private void setRecursoServices(IRecursoServices recursoServices) {
		this.recursoServices = recursoServices;
	}
	
}
